package enums;
import java.util.HashMap;
import java.util.Map;

import model.Configuration;

/**
 * Provides all text that is shown in Popups.
 */
public enum Message {

	UNGUELTIGESFORMAT("Ungültiges Format"), 
	MOEGLFALSCHESINPUT("Achtung!"),
	MINPWLENGTH("Min. length: " + Configuration.MINPWLENGTH), 
	MSGMISSINGINFO("Es fehlen Angaben!"), 
	WRONGPW("Falsches Passwort eingegeben!"), 
	WRONGUSER("Es wurde ein unbekannter Username eingegeben!"), 
	NOTENOUGHSTOCKLEFT("Es sind nicht mehr genügend Produkte vorrätig: "), 
	SETPWOKAY("Speichern des Passwortes war erfolgreich."), 
	SETPWERROR("Fehler beim Speichern des Passwortes!"), 
	ERROR("Es sind immer noch Fehler in Ihrer Eingabe. Bitte korrigieren Sie diese und fahren fort."), 
	ENTEREDOLDPWWRONG("Das eingegebene alte Passwort ist nicht korrekt!"), 
	PWVERIFICATIONWRONG("Das neue Passwort und die Bestätigung stimmen nicht überein."), 
	BILLISNTPAID("Der Kunde hat die Rechnung vom letzten Monat noch nicht beglichen!\nEs koennen keine Produkte auf Rechnung gekauft werden, bis die Zahlung erhalten wurde!"), 
	INVALIDEMAIL("Ungültige E-Mail Adresse!"), 
	CHANGEOK("Ändern war erfolgreich"),
	CHANGEFAIL("Ändern ist fehlgeschlagen"), 
	THISISNEEDEDINPUT("Dies ist eine notwendige Eingabe"), 
	NAMEVALIDATOR("Die Eingabe enthält nicht erlaubte Zeichen. (Erlaubte Zeichen: a-z, A-Z, ., , Umlaute)"), 
	ISALREADYSTAFF("Für die ausgewählte Person ist bereits ein Personal angelegt."), 
	CHANGECUSTOMER("Es befinden sich Eingaben im Fenster.\nWillst du wirklich den Kunden wechseln?");
	
	
	/**
	 * name as String for a Message
	 */
	private final String name;
	
	/**
	 * Map of all existing Messages
	 */
	private static final Map<String, Message> stringToMessage = new HashMap<>();

	static {
		for (Message f : Message.values()) {
			stringToMessage.put(f.toString(), f);
		}
	}

	/**
	 * Standard constructor of a message
	 * 
	 * @param name which will be added to a single Reason
	 */
	private Message(String name) {
		this.name = name;
	}

	/**
	 * Returns a String for a message
	 */
	@Override
	public String toString() {
		return name;
	}
	/**
	 * Returns a Message for a String
	 *
	 * @param s String which will be transformed into a Reason
	 * @return the Reason
	 */
	public static Message fromString(String s){
		return Message.stringToMessage.get(s);
	}
}
